# read 以只读的模式打开文件
fr = open('01.txt', mode='r')

# 读取文件内容
# 按长度读取，单位是字节，读取过程中存在指针，指针不断向后挪动
print(fr.read(4))   # tedu 读取4个字节
print(fr.read(10))  #  linux NSD 读取10个字节
print(fr.read())    # 不设置长度会读取到最后
print(fr.read(4))   # 只会读一次，不会重复读取

# 关闭文件，防止内存泄漏
fr.close()

# 打开文件，设置编码打开 设置中文utf-8，否则会乱码
fr = open('02.txt', mode='r', encoding='utf-8')
# 按行读取
print(fr.readline(), end='')
print(fr.readline(), end='')
print(fr.readline(), end='')
# 循环读取,每次取出一行放入内存
while True:
    line = fr.readline()
    # 判断是否读到数据，空则是读到了最后
    if not line:
        break
    print(line, end='')
fr.close()

# 读取所有行，返回一个列表形式，会将所有行放入内存
fr = open('02.txt', mode='r', encoding='utf-8')
# print(fr.readlines())
for line in fr.readlines():
    print(line, end='')
fr.close()   

# 二进制读取
fr = open('03.jpg', mode='rb')
# 返回二进制数据
print(fr.read(1024))
fr.close()
